/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.consultorio.dao;

import br.com.consultorio.util.FabricaConexao;
import br.com.consultorio.bean.MaterialUso;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author L3nfers
 */
public class MaterialUsoDaoImp implements MaterialUsoDao {

    @Override
    public List pesquisaPorNome(String nome) throws Exception {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs;
        MaterialUso materialUso;
        List materiais = new ArrayList();
        try {
            String SQL = "SELECT * FROM materialUso where nome like ?";
            conn = FabricaConexao.abreConexao();
            ps = conn.prepareStatement(SQL);
            ps.setString(1, "%" + nome + "%");
            rs = ps.executeQuery();
            while (rs.next()) {
                materialUso = new MaterialUso();
                materialUso.setId(rs.getInt("id"));
                materialUso.setNome(rs.getString("nome"));
                materialUso.setDescricao(rs.getString("descricao"));
                materialUso.setValor(Double.parseDouble(rs.getString("valor")));
                materiais.add(materialUso);
            }
        } catch (SQLException se) {
            throw new Exception("Erro ao tentar atualizar dados"
                    + se.getMessage());
        } finally {
            FabricaConexao.fechaConexao(conn, ps);
        }
        return materiais;
    }

    @Override
    public Object salvar(Object abj) throws Exception {
        MaterialUso materialUso = (MaterialUso) abj;
        PreparedStatement ps = null;
        Connection conn = null;

        try {
            String SQL = "INSERT INTO materialUso(nome, descricao, valor) VALUES(?, ?, ?)";
            conn = FabricaConexao.abreConexao();
            ps = conn.prepareStatement(SQL);
            ps.setString(1, materialUso.getNome());
            ps.setString(2, materialUso.getDescricao());
            ps.setDouble(3, materialUso.getValor());
            ps.executeUpdate();

        } catch (SQLException se) {
            throw new Exception("Erro ao tentar salvar dados" + se.getMessage());
        } finally {
            FabricaConexao.fechaConexao(conn, ps);
        }
        return materialUso;
    }

    @Override
    public void alterar(Object obj) throws Exception {
        MaterialUso materialUso = (MaterialUso) obj;
        PreparedStatement ps = null;
        Connection conn = null;
        try {
            String SQL = "UPDATE materialUso SET nome=?, descricao=?, valor=? WHERE id=?";
            conn = FabricaConexao.abreConexao();
            ps = conn.prepareStatement(SQL);
            ps.setString(1, materialUso.getNome());
            ps.setString(2, materialUso.getDescricao());
            ps.setDouble(3, materialUso.getValor());
            ps.setInt(4, materialUso.getId());
            ps.executeUpdate();
        } catch (SQLException se) {
            throw new Exception("Erro ao tentar atualizar dados" + se.getMessage());
        } finally {
            FabricaConexao.fechaConexao(conn, ps);
        }
    }

    @Override
    public void excluir(int id) throws Exception {
        PreparedStatement ps = null;
        Connection conn = null;
        try {
            String SQL = "DELETE FROM materialUso WHERE id=?";
            conn = FabricaConexao.abreConexao();
            ps = conn.prepareStatement(SQL);
            ps.setInt(1, id);
            ps.executeUpdate();
        } catch (SQLException se) {
            throw new Exception("Erro ao tentar excluir dados"
                    + se.getMessage());
        } finally {
            FabricaConexao.fechaConexao(conn, ps);
        }
    }

    @Override
    public Object procurar(Integer id) throws Exception {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;
        MaterialUso perfil = null;
        try {
            String SQL = "SELECT * FROM materialUso WHERE id=?";
            conn = FabricaConexao.abreConexao();
            ps = conn.prepareStatement(SQL);
            ps.setInt(1, id);
            rs = ps.executeQuery();
            if (rs.next()) {
                perfil = new MaterialUso();
                perfil.setId(id);
                perfil.setNome(rs.getString("nome"));
                perfil.setDescricao(rs.getString("descricao"));
                perfil.setValor(rs.getDouble("valor"));
            }
        } catch (SQLException se) {
            throw new Exception("Erro ao tentar atualizar dados"
                    + se.getMessage());
        } finally {
            FabricaConexao.fechaConexao(conn, ps, rs);
        }
        return perfil;
    }

    @Override
    public List<Object> listar() throws Exception {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs;
        MaterialUso materialUso;
        List materiaisUso = new ArrayList();
        try {
            String SQL = "SELECT * FROM materialUso";
            conn = FabricaConexao.abreConexao();
            ps = conn.prepareStatement(SQL);
            rs = ps.executeQuery();
            while (rs.next()) {
                materialUso = new MaterialUso();
                materialUso.setId(rs.getInt("id"));
                materialUso.setNome(rs.getString("nome"));
                materialUso.setDescricao(rs.getString("descricao"));
                materialUso.setValor(rs.getDouble("valor"));
                materiaisUso.add(materialUso);
            }
        } catch (SQLException se) {
            throw new Exception("Erro ao tentar atualizar dados"
                    + se.getMessage());
        } finally {
            FabricaConexao.fechaConexao(conn, ps);
        }
        return materiaisUso;
    }
}
